package com.designpattern.createpattern.demo07.builder;

import com.designpattern.createpattern.demo07.builder.builder.impl.MobiBike;
import com.designpattern.createpattern.demo07.builder.builder.impl.OfoBike;
import com.designpattern.createpattern.demo07.builder.director.Director;
import com.designpattern.createpattern.demo07.builder.product.Bike;

/**
 * 建造者模式的四个角色
 * 抽象建造者类 builder ：这个接口规定要实现复杂对象的哪些部分的创建，并不涉及具体的部件对象的创建
 * 具体建造者类 ConcreteBuilder ：实现builder接口，完成复杂产品的具体各个部件的创建方法。
 * 在构造过程完成后，提供产品的实例
 * 产品类 Product ： 要创建的复杂对象
 * 指挥者类 Director ： 调用具体建造者类来创建复杂对象的各个部分，在指导者中不涉及具体产品的信息，
 * 只负责保证对象各部分完整创建或按某种顺序创建。
 */
public class Main {
    public static void main(String[] args) {
        //创建指挥者对象
        Director director = new Director(new OfoBike());
        Bike bike = director.construct();
        System.out.println(bike.toString());
    }
}
